//#include <string>
#pragma once
#include <string>
class BaseCharacter;

enum terrainTypes {GRASS,DIRT,STONE_FLOOR,STONE_WALL,TREE,WATER,MUD,LAVA,ROCKS,MOUNTIAN,SNOW,SHRUB,PILLAR,CROWD};

class Tile
{
	BaseCharacter * character;
	int terrainType;
	bool obstacle;
	int x;
	int y;
	int imageID;
	std::string eventTrigger;

	bool highlighted;
	int r;
	int g;
	int b;
	int a;

public:
	Tile(void);
	~Tile(void);

	void ApplyEffect();
	void Render();
	void Update(float elapsedTime);

	BaseCharacter* GetCharacter()
	{
		return character;
	}

	void SetCharacter(BaseCharacter * c)
	{
		character = c;
	}

	int GetTerrainType()
	{
		return this->terrainType;
	}

	void SetTerrainType(int type)
	{
		this->terrainType = type;
	}

	bool GetObstacle()
	{
		return this->obstacle;
	}

	void SetObstacle(bool o)
	{
		this->obstacle = o;
	}

	int GetX()
	{
		return x;
	}

	void SetX(int newX)
	{
		x = newX;
	}

	int GetY()
	{
		return y;
	}

	void SetY(int newY)
	{
		y = newY;
	}

	int GetImageID()
	{
		return imageID;
	}

	void SetImageID(int id)
	{
		imageID = id;
	}

	const char * GetEventString()
	{
		return this->eventTrigger.c_str();
	}

	void SetEventString(const char * c)
	{
		this->eventTrigger = c;
	}

	int GetScreenPosX();
	int GetScreenPosY();

	void ChangeTileType(int type);

	void RemoveEffect();

	void HighlightTile(bool on, int red = 255,int green = 255,int blue = 255, int alpha = 255);

};

